package 文件.综合练习;

import java.io.File;
import java.util.ArrayList;

public class 练习三 {
    //创建一个集合存储符合要求的文件
    static ArrayList<File> arrFlies = new ArrayList<>();
    //1.获取这个目录下的所有的文件
    public static void main(String[] args) {

        //1.获取电脑上的所有的盘符
        File[] root = File.listRoots();
        //2.通过盘符获取每个盘符中的所有文件及目录
        for (File r : root) {
            //获取每个盘符的所有的目录及文件
            File[] listFiles = r.listFiles();
            //遍历每个盘符的每一个目录
            for (File file : listFiles) {
                if (file.isDirectory()){isAVI(file);
                } else if (file.isFile()&&file.getName().endsWith(".avi")) {
                    arrFlies.add(file);
                }
            }
        }
    }

    //定义一个递归方法查找每个目录中是否含有avi文件
    public static ArrayList<File> isAVI(File file) {
        //1.获取这个目录下的所有的文件
        File[] list = file.listFiles();
        //2.遍历这个目录
        for (File f : list) {
            //如果遍历出来的还是一个目录就获取这个目录中的所有的文件
            if (f.isDirectory()) {
                File[] sonArr = f.listFiles();
                //如果这个子目录不是空目录就在判断子目录里面的文件
                if (sonArr != null) {
                    //遍历子目录
                    for (File f1 : sonArr) {
                        if (f1.isFile() && f1.getName().endsWith(".avi")) {
                            //把获取到的这个文件添加到集合
                            arrFlies.add(f1);
                        } else if (f1.isDirectory()) {
                            arrFlies.addAll(isAVI(f1));
                        }
                    }
                }
                //把根目录下符合条件的文件添加到集合中
            } else if (f.isFile() && f.getName().endsWith(".avi")) {
                arrFlies.add(f);
            }
        }
        return arrFlies;
    }
}
